﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Practices.Unity;
using Sispe.Entities;
using Sispe.BussinesLogic;

namespace Sispe.UI
{
    public partial class FrmMttoVacaciones : Form
    {
        [Dependency]
        public IVacacionesBL vacacionesBL { get; set; }

        [Dependency]
        public IContratoBL contratoBL { get; set; }

        public FrmMttoVacaciones()
        {
            InitializeComponent();
            this.BuildUp();
        }

        bool isNew;

        public CONTRATO _currentContrato { get; set; }
        public PERMISO _currentPermiso { get; set; }
        public VACACIONE _currentVacaciones { get; set; }

        public void nuevaVacacion()
        {
            isNew = true;

            vACACIONEBindingSource.AddNew();

            observacionesRichTextBox.ReadOnly = true;
        }

        public void editarVacacion()
        {
            isNew = false;
            vACACIONEBindingSource.DataSource = _currentVacaciones;
            observacionesRichTextBox.ReadOnly = false;
            txtVActualizadas.Visible = true;
            lblVActualizadas.Visible = true;
            nroDiasTextBox.ReadOnly = true;
        }

        public void mostrarDatos()
        {
            //fechaInicioTextBox.Text = Convert.ToString(_currentContrato.FechaInicio);
            //fechaTerminoTextBox.Text = Convert.ToString(_currentContrato.FechaTermino);
            //idContratoTextBox.Text = Convert.ToString(_currentContrato.IdContrato);

            //DateTime f_i = DateTime.Parse(fechaInicioTextBox.Text);
            //DateTime f_f = DateTime.Parse(fechaTerminoTextBox.Text);

            //int n_meses = (f_f.Month - f_i.Month) + (12 * (f_f.Year - f_i.Year));

            //double n_dias = (n_meses * 30) / 12;

            //nroDiasTextBox.Text = Convert.ToString(n_dias);
        }

        public void mostrarDatosByPermiso()
        {
            //fechaInicioTextBox.Text = Convert.ToString(_currentContrato.FechaInicio);
            //fechaTerminoTextBox.Text = Convert.ToString(_currentContrato.FechaTermino);
            //idContratoTextBox.Text = Convert.ToString(_currentContrato.IdContrato);

            //var vacacions = (from c in vacacionesBL.GetAllFromVacacionesByIdCOntrato(_currentContrato.IdContrato)
            //                 select c).LastOrDefault();

            //nroDiasTextBox.Text = vacacions.NroDias;

            //var act_dias = Convert.ToInt32(vacacions.NroDias) - Convert.ToInt32(_currentPermiso.Dias);

            //observacionesRichTextBox.Text = "ESTAS VACACIONES SE RECALCULARON POR EL PERMISO REGISTRADO CON EL ID:  " + _currentPermiso.IdPermiso;
            //txtVActualizadas.Text = Convert.ToString(act_dias);
        }

        private void FrmMttoVacaciones_Load(object sender, EventArgs e)
        {
            //if (isNew == true)
            //{
            //    mostrarDatos();
            //}
            //else if (isNew == false)
            //{
            //    mostrarDatosByPermiso();
            //}
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            var vacaciones = vACACIONEBindingSource.Current as VACACIONE;
            var msg = "ERROR";

            if (vacaciones != null)
            {
                vacaciones.IdContrato = _currentVacaciones.IdContrato;
                vacaciones.Observaciones = observacionesRichTextBox.Text.ToUpper();

                if (isNew == true)
                {
                    try
                    {   
                        vacaciones.NroDias = nroDiasTextBox.Text;
                        vacacionesBL.AddVacaciones(vacaciones);
                        MessageBox.Show("Registro Correcto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        msg = ex.Message;
                        MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (isNew == false)
                {
                    try
                    {
                        vacaciones.NroDias = txtVActualizadas.Text;
                        vacacionesBL.UpdateVacaciones(vacaciones);
                        MessageBox.Show("Modificación Correcta.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        msg = ex.Message;
                        MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        private void nroDiasTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtVActualizadas_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
    }
}
